// events that are available for use by users of AG Grid and so should be documented
/** EVENTS that should be exposed via code generation for the framework components.  */
export const _PUBLIC_EVENTS = [
    'columnEverythingChanged',
    'newColumnsLoaded',
    'columnPivotModeChanged',
    'pivotMaxColumnsExceeded',
    'columnRowGroupChanged',
    'expandOrCollapseAll',
    'columnPivotChanged',
    'gridColumnsChanged',
    'columnValueChanged',
    'columnMoved',
    'columnVisible',
    'columnPinned',
    'columnGroupOpened',
    'columnResized',
    'displayedColumnsChanged',
    'virtualColumnsChanged',
    'columnHeaderMouseOver',
    'columnHeaderMouseLeave',
    'columnHeaderClicked',
    'columnHeaderContextMenu',
    'asyncTransactionsFlushed',
    'rowGroupOpened',
    'rowDataUpdated',
    'pinnedRowDataChanged',
    'pinnedRowsChanged',
    'rangeSelectionChanged',
    'cellSelectionChanged',
    'chartCreated',
    'chartRangeSelectionChanged',
    'chartOptionsChanged',
    'chartDestroyed',
    'toolPanelVisibleChanged',
    'toolPanelSizeChanged',
    'modelUpdated',
    'cutStart',
    'cutEnd',
    'pasteStart',
    'pasteEnd',
    'fillStart',
    'fillEnd',
    'cellSelectionDeleteStart',
    'cellSelectionDeleteEnd',
    'rangeDeleteStart',
    'rangeDeleteEnd',
    'undoStarted',
    'undoEnded',
    'redoStarted',
    'redoEnded',
    'cellClicked',
    'cellDoubleClicked',
    'cellMouseDown',
    'cellContextMenu',
    'cellValueChanged',
    'cellEditRequest',
    'rowValueChanged',
    'headerFocused',
    'cellFocused',
    'rowSelected',
    'selectionChanged',
    'tooltipShow',
    'tooltipHide',
    'cellKeyDown',
    'cellMouseOver',
    'cellMouseOut',
    'filterChanged',
    'filterModified',
    'filterUiChanged',
    'filterOpened',
    'floatingFilterUiChanged',
    'advancedFilterBuilderVisibleChanged',
    'sortChanged',
    'virtualRowRemoved',
    'rowClicked',
    'rowDoubleClicked',
    'gridReady',
    'gridPreDestroyed',
    'gridSizeChanged',
    'viewportChanged',
    'firstDataRendered',
    'dragStarted',
    'dragStopped',
    'dragCancelled',
    'rowEditingStarted',
    'rowEditingStopped',
    'cellEditingStarted',
    'cellEditingStopped',
    'bodyScroll',
    'bodyScrollEnd',
    'paginationChanged',
    'componentStateChanged',
    'storeRefreshed',
    'stateUpdated',
    'columnMenuVisibleChanged',
    'contextMenuVisibleChanged',
    'rowDragEnter',
    'rowDragMove',
    'rowDragLeave',
    'rowDragEnd',
    'rowDragCancel',
    'findChanged',
    'rowResizeStarted',
    'rowResizeEnded',
    'columnsReset',
    'bulkEditingStarted',
    'bulkEditingStopped',
    'batchEditingStarted',
    'batchEditingStopped',
] as const;

// events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components
// These events are still available to users via the API if the eventName is cast to any to stop Typescript from complaining, but they are not intended for general use
/** Exclude the following internal events from code generation to prevent exposing these events via framework components */
const _INTERNAL_EVENTS = [
    'scrollbarWidthChanged',
    'keyShortcutChangedCellStart',
    'keyShortcutChangedCellEnd',
    'pinnedHeightChanged',
    'cellFocusCleared',
    'fullWidthRowFocused',
    'checkboxChanged',
    'heightScaleChanged',
    'suppressMovableColumns',
    'suppressMenuHide',
    'suppressFieldDotNotation',
    'columnPanelItemDragStart',
    'columnPanelItemDragEnd',
    'bodyHeightChanged',
    'columnContainerWidthChanged',
    'displayedColumnsWidthChanged',
    'scrollVisibilityChanged',
    'scrollGapChanged',
    'columnHoverChanged',
    'flashCells',
    'rowDragVisibilityChanged',
    'paginationPixelOffsetChanged',
    'displayedRowsChanged',
    'leftPinnedWidthChanged',
    'rightPinnedWidthChanged',
    'rowContainerHeightChanged',
    'headerHeightChanged',
    'columnGroupHeaderHeightChanged',
    'columnHeaderHeightChanged',
    'stylesChanged',
    'storeUpdated',
    'filterDestroyed',
    'filterHandlerDestroyed',
    'rowDataUpdateStarted',
    'rowCountReady',
    'advancedFilterEnabledChanged',
    'dataTypesInferred',
    'fieldValueChanged',
    'fieldPickerValueSelected',
    'richSelectListRowSelected',
    'sideBarUpdated',
    'alignedGridScroll',
    'alignedGridColumn',
    'gridOptionsChanged',
    'chartTitleEdit',
    'recalculateRowBounds',
    'stickyTopOffsetChanged',
    'overlayExclusiveChanged',
    'rowNodeDataChanged',
    'cellEditValuesChanged',
    'filterSwitched',
    'filterClosed',
    'headerRowsChanged',
    'rowExpansionStateChanged',
    'showRowGroupColsSetChanged',
] as const;

// We define as a callback to help with tree shaking (esbuild)
export const _GET_ALL_EVENTS = () => [..._PUBLIC_EVENTS, ..._INTERNAL_EVENTS] as const;

export type AgPublicEventType = (typeof _PUBLIC_EVENTS)[number];
export type AgInternalEventType = (typeof _INTERNAL_EVENTS)[number];
export type AgEventType = AgPublicEventType | AgInternalEventType;
